One of my art projects for 2014 has been Bot Collective — an ongoing project where I make Twitterbots that "live" on the Raspberry Pi and have physical bodies. I've defintely become familiar with how to make a Pi into a Twitter engine and want to share my knowledge.
I'd like to see many Bot Friends in the Twitterverse.
This Instructable will show you how to set up your Raspberry Pi to send Twitter messages.
I learned most of this from this makeuseof guide, which was nearly complete. I wanted to cover the additional steps of setting up your application via Twitter. But the rest of this guide has been invaluable to me.
Before doing this Instructable, please make sure you have your Raspberry Pi up and running, which you can do with The Ultimate Raspberry Pi Configuration Guide Instructable.
I'm using the Mac OS for this guide, but you can extend the principles to other operating systems.

Step 1: Install Twython packages
Open the Terminal window and on the command line, type:
ssh pi@10.0.1.62If you are running directly hooked into the monitor, you can skip this step.
Run the latest package updates and upgrades, just to make sure everything is current — you will have to have wifi access for this step. Type in the commands:
sudo apt-get update sudo apt-get upgradeThere will be a lot of waiting and Linux garble, so take break and pet your cat. Now, install the Twython libraries, which will let you use Twitter from Python using these three commands:
sudo apt-get install python-setuptools sudo easy_install pip sudo pip install twythonYou'll see more Linux stuff and then you should be good to go.
Step 2: Create email for account
You can register for a free account with Yahoo, Gmail and many others.
I have by own ISP and about 10 Twitterbots, and so I create an email address for each one through my ISP. My Twitterbots also value their privacy, so the ISP option is a good one.
Step 3: Create Twitter account
You'll have to go through their steps of following several people or organizations and verification via email.
Step 4: Add your mobile phone to account
Go to Settings and check out the Mobile tab.
Add your phone number and verify the text with Twitter (GO 40404).
Turn off text notifications at the next dialog box and then leave this tab open in your browser.
Step 5: Create Twitter app
Go to https://apps.twitter.com/ and click on Create New App
At the Create an Application dialog box, enter:
- Name of your application
- Description
- Link to valid URL (this can be changed later)
Leave the Callback URL field empty
Read the terms of agreement and agree to them and then OK the dialog
Step 6: Modify permissions for read/write
The first thing you'll need to do is change the permission, click on modify permissions on the Access level tab
Choose either Read and Write or Read, Write and Access direct messages, the latter if your Twitterbot will parse DMs.
Click on Update Settings. If you get the error that you need to add your mobile phone to your account, then you probably skipped the "Add mobile phone to account" step of this Instructable.
Click on the Details tab and then you're back at the Application Settings dialog. Wait for a minute and click on Refresh until your Access level changes to Read/Write.
Step 7: Get access token and API Keys
This may take a minute, so hit refresh on your browser after a few seconds until you get a dialog box like this (once again, I've blacked out my private information).
Copy the alphanumeric strings for the API key, API secret, Access token and Access token secret to a secure location like 1Password at least to a text file or to Evernote.
Step 8: Delete your mobile phone number from the account
Step 9: Create a Python test script
nano tweet_test.pyTry this script, only with your API key, API secret, Access token and Access token secret. Put a different string in than my RIP string — this is for testing JustDiedBot.
And substitute your own api key, api secret, access token and access token secret instead of using these.
--------
#!/usr/bin/env python
import sys
from twython import Twython
tweetStr = "RIP Peeraphan Palusuk, 68, Thai politician, Minister of Science and Technology (since 2013), MP for Yasothon (since 1985)"
# your twitter consumer and access information goes here
# note: these are garbage strings and won't work
apiKey = 'roasdkoqwkk8i10kwks09aka'
apiSecret = '4ghmkjal810kdla0wkkoasi'
accessToken = '1239821-dakos81koamow9918ma0sadsqq'
accessTokenSecret = 'saklasooqjdoajfj8f9981mska01mdka09'
api = Twython(apiKey,apiSecret,accessToken,accessTokenSecret)
api.update_status(status=tweetStr)
print "Tweeted: " + tweetStr
---------
cntl-X, Return will save the script
(I know, I know, the variable names are different in the screenshot than the script I wrote. Busted).
Step 10: Run the Python script and check out the Tweet
python tweet_test.pyand you'll see the tweetStr output. In the case of JustDiedBot, it is this:
Tweeted: RIP Peeraphan Palusuk, 68, Thai politician, Minister of Science and Technology (since 2013), MP for Yasothon (since 1985)Now go to Twitter and you should see your Tweet!
Step 11: Improve on the technique
You'll have to decide what kind of Twitterbot you'll want to do. Quotebots are an easy way to start and the first 6 bots for The Bot Collective were quotebots.
One thing you'll want to check out is using the crontab, which will let you do timed operations such as send a Tweet out every hour or once a day.
Word of warning: You'll want to be cautious about over-tweeting or spamming people with replies. This behavior might get your account suspended.
Step 7 of my Launch Python script on Startup for Raspberry Pi covers timed events with crontab, as well as directing any crontab errors to an appropriate logfile.
This is another comprehensive crontab guide.
Step 12: Done!
In the meantime, do check out JustDiedBot — it is up and running as of today!
Soon, I will be publishing the code and an Instructable on Twitter-scraping
I hope this was helpful!
Scott Kildall
For more on Raspberry Pi code and other projects, you can find me here:
@kildall or www.kildall.com/blog
Hey. Awesome tut. But is there a way to let him favorite every tweet from the people he follows?
wow, great tutorial! I'm going to use it for my ipcam notifications!
Hello! I love your twitterbot idea. I came across your post looking for info on a project of my own. I am trying to create a Pi that will perform GPIO activity (blink LED, turn on sprinklers, whatever) when a twitter account receives a certain direct message.
My ultimate goal is to use Google Calendar, through IFTTT, to tweet my sprinklers on.
I hate my stupid commercial sprinkler controller this much.
Hi!
thank you for the great HOWTO, i made i small BOT that scrape the wikiquote of the day from the wikiquote atom feed service and tweet it every day! By now it is only for Italian, but well if you want follow me @RaspzenBOT.
Thank you!
Luca